package org.fenixsoft.jvm.chapter10;

public class JavacExample {

    private int m = 0;

    public void add(){
        int a = 1 + 2;//标注检查还做了优化，会被优化成 int a =  3;
        System.out.println(a);
    }


    /**
     * foo1()与foo2字节码完全相同，
     * 因为a是局部变量，局部变量不会显示在字段表（filed_info之中），自然不可能存储访问标志。
     *
     * 因此，可以肯定地推断出把局部变量声明为final，对运行期是完全没有影响的，变量的不变性仅仅由Javac编
     * 译器在编译期间来保障，这就是一个只能在编译期而不能在运行期中检查的例子
     */
    public void foo1(){
        final int a = 0;
    }

    public void foo2(){
        int a = 0;
    }
}
